#include <hxcpp.h>

#ifndef INCLUDED_Date
#include <Date.h>
#endif
#ifndef INCLUDED_List
#include <List.h>
#endif
#ifndef INCLUDED_cpp_CppInt32__
#include <cpp/CppInt32__.h>
#endif
#ifndef INCLUDED_format_tools_IO
#include <format/tools/IO.h>
#endif
#ifndef INCLUDED_format_tools_InflateImpl
#include <format/tools/InflateImpl.h>
#endif
#ifndef INCLUDED_format_zip_ExtraField
#include <format/zip/ExtraField.h>
#endif
#ifndef INCLUDED_format_zip_Reader
#include <format/zip/Reader.h>
#endif
#ifndef INCLUDED_haxe_io_Bytes
#include <haxe/io/Bytes.h>
#endif
#ifndef INCLUDED_haxe_io_BytesBuffer
#include <haxe/io/BytesBuffer.h>
#endif
#ifndef INCLUDED_haxe_io_Error
#include <haxe/io/Error.h>
#endif
#ifndef INCLUDED_haxe_io_Input
#include <haxe/io/Input.h>
#endif
#ifndef INCLUDED_haxe_io_Output
#include <haxe/io/Output.h>
#endif
namespace format{
namespace zip{

Void Reader_obj::__construct(::haxe::io::Input i)
{
{
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",36)
	this->i = i;
}
;
	return null();
}

Reader_obj::~Reader_obj() { }

Dynamic Reader_obj::__CreateEmpty() { return  new Reader_obj; }
hx::ObjectPtr< Reader_obj > Reader_obj::__new(::haxe::io::Input i)
{  hx::ObjectPtr< Reader_obj > result = new Reader_obj();
	result->__construct(i);
	return result;}

Dynamic Reader_obj::__Create(hx::DynamicArray inArgs)
{  hx::ObjectPtr< Reader_obj > result = new Reader_obj();
	result->__construct(inArgs[0]);
	return result;}

::Date Reader_obj::readZipDate( ){
	HX_SOURCE_PUSH("Reader_obj::readZipDate")
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",41)
	int t = this->i->readUInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",42)
	int hour = (int((int(t) >> int((int)11))) & int((int)31));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",43)
	int min = (int((int(t) >> int((int)5))) & int((int)63));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",44)
	int sec = (int(t) & int((int)31));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",45)
	int d = this->i->readUInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",46)
	int year = (int(d) >> int((int)9));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",47)
	int month = (int((int(d) >> int((int)5))) & int((int)15));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",48)
	int day = (int(d) & int((int)31));
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",49)
	return ::Date_obj::__new((year + (int)1980),(month - (int)1),day,hour,min,(int(sec) << int((int)1)));
}


HX_DEFINE_DYNAMIC_FUNC0(Reader_obj,readZipDate,return )

::List Reader_obj::readExtraFields( int length){
	HX_SOURCE_PUSH("Reader_obj::readExtraFields")
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",53)
	::List fields = ::List_obj::__new();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",54)
	while(((length > (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",55)
		if (((length < (int)4))){
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",55)
			hx::Throw (HX_CSTRING("Invalid extra fields data"));
		}
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",56)
		int tag = this->i->readUInt16();
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",57)
		int len = this->i->readUInt16();
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",58)
		if (((length < len))){
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",58)
			hx::Throw (HX_CSTRING("Invalid extra fields data"));
		}
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",59)
		switch( (int)(tag)){
			case (int)28789: {
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",61)
				int version = this->i->readByte();
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",62)
				if (((version != (int)1))){
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",63)
					::haxe::io::BytesBuffer data = ::haxe::io::BytesBuffer_obj::__new();
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",64)
					data->b->push(version);
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
					{
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
						::haxe::io::Bytes src = this->i->read((len - (int)1));
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
						Array< unsigned char > b1 = data->b;
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
						Array< unsigned char > b2 = src->b;
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
						{
							HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
							int _g1 = (int)0;
							int _g = src->length;
							HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
							while(((_g1 < _g))){
								HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
								int i = (_g1)++;
								HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",65)
								data->b->push(b2->__get(i));
							}
						}
					}
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",66)
					fields->add(::format::zip::ExtraField_obj::FUnknown(tag,data->getBytes()));
				}
				else{
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",68)
					::cpp::CppInt32__ crc = this->i->readInt32();
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",69)
					::String name = this->i->read((len - (int)5))->toString();
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",70)
					fields->add(::format::zip::ExtraField_obj::FInfoZipUnicodePath(name,crc));
				}
			}
			;break;
			default: {
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",72)
				fields->add(::format::zip::ExtraField_obj::FUnknown(tag,this->i->read(len)));
			}
		}
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",75)
		hx::SubEq(length,((int)4 + len));
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",77)
	return fields;
}


HX_DEFINE_DYNAMIC_FUNC1(Reader_obj,readExtraFields,return )

Dynamic Reader_obj::readEntryHeader( ){
	HX_SOURCE_PUSH("Reader_obj::readEntryHeader")
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",81)
	::haxe::io::Input i = this->i;
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",82)
	int h = i->readInt31();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",83)
	if (((bool((h == (int)33639248)) || bool((h == (int)101010256))))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",84)
		return null();
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",85)
	if (((h != (int)67324752))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",86)
		hx::Throw (HX_CSTRING("Invalid Zip Data"));
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",87)
	int version = i->readUInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",88)
	int flags = i->readUInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",89)
	bool utf8 = (((int(flags) & int((int)2048))) != (int)0);
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",90)
	if (((((int(flags) & int((int)63479))) != (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",91)
		hx::Throw ((HX_CSTRING("Unsupported flags ") + flags));
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",92)
	int compression = i->readUInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",93)
	bool compressed = (compression != (int)0);
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",94)
	if (((bool(compressed) && bool((compression != (int)8))))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",95)
		hx::Throw ((HX_CSTRING("Unsupported compression ") + compression));
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",96)
	::Date mtime = this->readZipDate();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",97)
	::cpp::CppInt32__ crc32 = i->readInt32();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",98)
	int csize = i->readUInt30();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",99)
	int usize = i->readUInt30();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",100)
	int fnamelen = i->readInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",101)
	int elen = i->readInt16();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",102)
	::String fname = i->readString(fnamelen);
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",103)
	::List fields = this->readExtraFields(elen);
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",104)
	if ((utf8)){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",105)
		fields->push(::format::zip::ExtraField_obj::FUtf8_dyn());
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",106)
	::haxe::io::Bytes data = null();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",107)
	if (((((int(flags) & int((int)8))) != (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",108)
		csize = (int)-1;
	}
	struct _Function_1_1{
		inline static Dynamic Block( ::Date &mtime,bool &compressed,::haxe::io::Bytes &data,::List &fields,int &usize,int &csize,::String &fname,::cpp::CppInt32__ &crc32){
			{
				hx::Anon __result = hx::Anon_obj::Create();
				__result->Add(HX_CSTRING("fileName") , fname,false);
				__result->Add(HX_CSTRING("fileSize") , usize,false);
				__result->Add(HX_CSTRING("fileTime") , mtime,false);
				__result->Add(HX_CSTRING("compressed") , compressed,false);
				__result->Add(HX_CSTRING("dataSize") , csize,false);
				__result->Add(HX_CSTRING("data") , data,false);
				__result->Add(HX_CSTRING("crc32") , crc32,false);
				__result->Add(HX_CSTRING("extraFields") , fields,false);
				return __result;
			}
			return null();
		}
	};
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",109)
	return _Function_1_1::Block(mtime,compressed,data,fields,usize,csize,fname,crc32);
}


HX_DEFINE_DYNAMIC_FUNC0(Reader_obj,readEntryHeader,return )

Void Reader_obj::readEntryData( Dynamic e,::haxe::io::Bytes buf,::haxe::io::Output out){
{
		HX_SOURCE_PUSH("Reader_obj::readEntryData")
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",121)
		::format::tools::IO_obj::copy(this->i,out,buf,e->__Field(HX_CSTRING("dataSize"),true));
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC3(Reader_obj,readEntryData,(void))

::List Reader_obj::read( ){
	HX_SOURCE_PUSH("Reader_obj::read")
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",126)
	::List l = ::List_obj::__new();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",127)
	Dynamic buf = null();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",128)
	::haxe::io::Bytes tmp = null();
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",129)
	while((true)){
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",130)
		Dynamic e = this->readEntryHeader();
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",131)
		if (((e == null()))){
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",132)
			break;
		}
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",133)
		if (((e->__Field(HX_CSTRING("dataSize"),true) < (int)0))){
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",165)
			int bufSize = (int)65536;
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",166)
			if (((tmp == null()))){
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",167)
				tmp = ::haxe::io::Bytes_obj::alloc(bufSize);
			}
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",168)
			::haxe::io::BytesBuffer out = ::haxe::io::BytesBuffer_obj::__new();
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",169)
			::format::tools::InflateImpl z = ::format::tools::InflateImpl_obj::__new(this->i,false,false);
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",170)
			while((true)){
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",171)
				int n = z->readBytes(tmp,(int)0,bufSize);
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
				{
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
					if (((bool((n < (int)0)) || bool((n > tmp->length))))){
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
						hx::Throw (::haxe::io::Error_obj::OutsideBounds_dyn());
					}
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
					Array< unsigned char > b1 = out->b;
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
					Array< unsigned char > b2 = tmp->b;
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
					{
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
						int _g1 = (int)0;
						int _g = n;
						HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
						while(((_g1 < _g))){
							HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
							int i = (_g1)++;
							HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",172)
							out->b->push(b2->__get(i));
						}
					}
				}
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",173)
				if (((n < bufSize))){
					HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",174)
					break;
				}
			}
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",176)
			e->__FieldRef(HX_CSTRING("data")) = out->getBytes();
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",178)
			e->__FieldRef(HX_CSTRING("crc32")) = this->i->readInt32();
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",179)
			if (((::cpp::CppInt32___obj::compare(e->__Field(HX_CSTRING("crc32"),true),::cpp::CppInt32___obj::ofInt((int)134695760)) == (int)0))){
				HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",180)
				e->__FieldRef(HX_CSTRING("crc32")) = this->i->readInt32();
			}
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",181)
			e->__FieldRef(HX_CSTRING("dataSize")) = this->i->readUInt30();
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",182)
			e->__FieldRef(HX_CSTRING("fileSize")) = this->i->readUInt30();
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",184)
			e->__FieldRef(HX_CSTRING("dataSize")) = e->__Field(HX_CSTRING("fileSize"),true);
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",185)
			e->__FieldRef(HX_CSTRING("compressed")) = false;
		}
		else{
			HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",187)
			e->__FieldRef(HX_CSTRING("data")) = this->i->read(e->__Field(HX_CSTRING("dataSize"),true));
		}
		HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",188)
		l->add(e);
	}
	HX_SOURCE_POS("/usr/lib/haxe/lib/format/1,22/format/zip/Reader.hx",190)
	return l;
}


HX_DEFINE_DYNAMIC_FUNC0(Reader_obj,read,return )


Reader_obj::Reader_obj()
{
}

void Reader_obj::__Mark(HX_MARK_PARAMS)
{
	HX_MARK_BEGIN_CLASS(Reader);
	HX_MARK_MEMBER_NAME(i,"i");
	HX_MARK_END_CLASS();
}

void Reader_obj::__Visit(HX_VISIT_PARAMS)
{
	HX_VISIT_MEMBER_NAME(i,"i");
}

Dynamic Reader_obj::__Field(const ::String &inName,bool inCallProp)
{
	switch(inName.length) {
	case 1:
		if (HX_FIELD_EQ(inName,"i") ) { return i; }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"read") ) { return read_dyn(); }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"readZipDate") ) { return readZipDate_dyn(); }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"readEntryData") ) { return readEntryData_dyn(); }
		break;
	case 15:
		if (HX_FIELD_EQ(inName,"readExtraFields") ) { return readExtraFields_dyn(); }
		if (HX_FIELD_EQ(inName,"readEntryHeader") ) { return readEntryHeader_dyn(); }
	}
	return super::__Field(inName,inCallProp);
}

Dynamic Reader_obj::__SetField(const ::String &inName,const Dynamic &inValue,bool inCallProp)
{
	switch(inName.length) {
	case 1:
		if (HX_FIELD_EQ(inName,"i") ) { i=inValue.Cast< ::haxe::io::Input >(); return inValue; }
	}
	return super::__SetField(inName,inValue,inCallProp);
}

void Reader_obj::__GetFields(Array< ::String> &outFields)
{
	outFields->push(HX_CSTRING("i"));
	super::__GetFields(outFields);
};

static ::String sStaticFields[] = {
	String(null()) };

static ::String sMemberFields[] = {
	HX_CSTRING("i"),
	HX_CSTRING("readZipDate"),
	HX_CSTRING("readExtraFields"),
	HX_CSTRING("readEntryHeader"),
	HX_CSTRING("readEntryData"),
	HX_CSTRING("read"),
	String(null()) };

static void sMarkStatics(HX_MARK_PARAMS) {
};

static void sVisitStatics(HX_VISIT_PARAMS) {
	HX_VISIT_MEMBER_NAME(Reader_obj::__mClass,"__mClass");
};

Class Reader_obj::__mClass;

void Reader_obj::__register()
{
	Static(__mClass) = hx::RegisterClass(HX_CSTRING("format.zip.Reader"), hx::TCanCast< Reader_obj> ,sStaticFields,sMemberFields,
	&__CreateEmpty, &__Create,
	&super::__SGetClass(), 0, sMarkStatics, sVisitStatics);
}

void Reader_obj::__boot()
{
}

} // end namespace format
} // end namespace zip
